#include "SierpinskiPontos.h"
#include <stdlib.h>
#include <time.h>
#include <iostream>
using namespace std;

SierpinskiPontos::SierpinskiPontos(Point2f a, Point2f b, Point2f c, unsigned int numero) : Sierpinski(a,b,c,numero)
{
    srand(time(NULL));
}

Point2f SierpinskiPontos::randomVertex(Point2f p1, Point2f p2, Point2f p3)
{
    switch(rand()%3)
    {
        case 0: return(p1);
        case 1: return(p2);
        case 2: return(p3);
        default: return(Point2f(0,0));
    }
}

void SierpinskiPontos::draw()
{
    // Desenha o triangulo exterior:
    glBegin(GL_POINTS);
        glVertex2f(a.x,a.y);
        glVertex2f(b.x,b.y);
        glVertex2f(c.x,c.y);
    glEnd();

    Point2f vertice_atual, vertice_anterior = randomVertex(a,b,c);
    unsigned int numero_pontos = this->numero;

    // Desenha os pontos:
    glBegin(GL_POINTS);
    while(numero_pontos--)
    {
        vertice_atual = randomVertex(a,b,c);
        vertice_anterior = pontoMedio(vertice_anterior,vertice_atual);
        glVertex2f(vertice_anterior.x,vertice_anterior.y);
//        cout<<"Ponto "<<numero_pontos<<": ("<<vertice_anterior.x<<","<<vertice_anterior.y<<")"<<endl;
    }
    glEnd();
}
